<?php

namespace app\member\controller;

use think\Controller;
use think\Db;

class Material extends Common{
    function __construct(){
        parent::__construct();
        $this->assign('_nav',json_encode(config("navs.2.children"),JSON_UNESCAPED_UNICODE));
    }
    public function index(){
        return view();
    }


    // 素材添加
    public function add(){
    	// 获取用户信息
    	$userinfo = $this->user;
    	// 获取用户的素材小组的数据
    	$cate_list = Db::name('source_category')->where('uid = '.$userinfo['id'])->select();
    	$this->assign('list',$cate_list);
        return view();
    }

    /**
     * 添加素材小组
     * @return json
     */
    public function adds(){
    	// 获取ajax传递的信息
    	$data = [];
    	$data = input('post.');
    	if (isset($data['filename'])) {
    		
	    	$media = $data['filename'];
	    	unset($data['filename']);
    	}
    	// 获取用户信息
    	$userinfo = $this->user;
    	$data['uid'] = $userinfo['id'];
        $reg = false;

    	// 判断是否需要添加数据到用户多媒体资源表
    	if ($data['type'] != '0') {
            // 启动事务
            Db::startTrans();
            try{
	    		// 需要
	    		Db::name('source')->insert($data);
	    		$add = Db::name('source')->getLastInsID();
	    		// $add = Db::name('source')->insertGetId($data);
	    		// if ($add > 0) {
	    			$upd = Db::name('media')->where('id','in', $media)->update(['source_id' => $add]);
	    		// }

                // 提交事务
                Db::commit();
                // $orderreg = $regadd;
                if ($add > 0) {
                    $reg = true;
                }
            } catch (\Exception $e) {
                // 回滚事务
                Db::rollback();
                $reg = false;
            }
    	}
    	else{
    		// 不需要
    		Db::name('source')->insert($data);
    		$add = Db::name('source')->getLastInsID();
            if ($add > 0) {
                $reg = true;
            }
    		// $add = Db::name('source')->insertGetId($data);
    	}
    	// 添加数据到数据库
    	// $add = Db::name('source_category')->insert($data);
    	// 判断返回操作结果
    	if ($reg) {
    		// 添加成功
    		$this->success('添加成功',url('material/manage'));
    	}
    	else{
    		// 添加失败
    		$this->error('添加失败');
    	}
    	
    	// echo json_encode($data);
    	// 
    }


    // 素材管理
    public function manage(){
    	// $page = 2;
    	$page = input('page');
        $cate = input('cate');
    	$cateid = input('cates');
        $type = input('type');
    	if ($page == '' && $cate == '' && $type == '') {
	    	// // 获取用户信息
	    	// $userinfo = $this->user;
            // 获取用户信息
            $userinfo = $this->user;
            if ($cateid != '' && $cate != '' && $cateid != $cate) {
                echo json_encode();
                return false;
                die;
            }
	    	// if ($cate != '') {
	    	// 	$where = 's.uid = '.$userinfo['id'].' and s.cate_id = '.$cate;
	    	// }
	    	// else{
	    	// 	$where = 's.uid = '.$userinfo['id'];
	    	// }
            $where = 's.uid = '.$userinfo['id'];   
            if ($cate != '' && $type != '') {
                $where = $where.' and s.cate_id = '.$cate.' and s.type = '.$type;
            }
            elseif ($cate != '' && $type == '') {
                $where = $where.' and s.cate_id = '.$cate;
            }
            elseif ($type != '' && $cate == '') {
                $where = $where.' and s.type = '.$type;
            }

            if ($cateid != '') {
    	    	// 获取素材信息
    	    	$list = Db::name('source')
    	    			->alias('s')
    	    			->join('source_category sc','s.cate_id = sc.id','LEFT')
    	    			->join('media m','s.id = m.source_id','LEFT')
    	    			->field('s.*,m.link,m.type mtype,m.id mid,sc.cate_name')
                        ->where($where)
    	    			->where('s.cate_id = '.$cateid)
    	    			->order('id desc')
    	    			->paginate();
            }
            else{
                // 获取素材信息
                $list = Db::name('source')
                        ->alias('s')
                        ->join('source_category sc','s.cate_id = sc.id','LEFT')
                        ->join('media m','s.id = m.source_id','LEFT')
                        ->field('s.*,m.link,m.type mtype,m.id mid,sc.cate_name')
                        ->where($where)
                        ->order('id desc')
                        ->paginate();
            }
	    			// ->limit(1)->page(1)->select();
	    	// print_r($list);die;
            // 获取素材小组
            
            $cate_list = [];
            $cate_list = Db::name('source_category')
                    ->where('uid',$userinfo['id'])
                    ->order('id desc')
                    ->select();

	    	$list = $list->toarray();
	    	$pages = $list;
	    	unset($pages['data']);
	    	// print_r($pages);die;
	    	$this->assign('list',$list['data']);
	    	$this->assign('page',$pages);
            $this->assign('catelist',$cate_list);
	    	$this->assign('cateid',$cateid);
	        return view();
    	}
    	else{

	    	// 获取用户信息
	    	$userinfo = $this->user;
            // echo json_encode($cateid);
            // echo json_encode($cate);
            // die;

            if ($cateid != '' && $cate != '' && $cateid != $cate) {
                $rtn = array(
                        'current_page' => 0,
                        'data' => '',
                        'last_page' => 0,
                        'per_page' => 15,
                        'total' => 0
                    );
                echo json_encode($rtn);
                // return false;
                die;
            }

	    	// 获取素材信息
            $where = 's.uid = '.$userinfo['id'];   
            if ($cate != '' && $type != '') {
                $where = $where.' and s.cate_id = '.$cate.' and s.type = '.$type;
            }
            elseif ($cate != '' && $type == '') {
                $where = $where.' and s.cate_id = '.$cate;
            }
            elseif ($type != '' && $cate == '') {
                $where = $where.' and s.type = '.$type;
            }
            if ($cateid != '') {
                // 获取素材信息
                $list = Db::name('source')
                        ->alias('s')
                        ->join('source_category sc','s.cate_id = sc.id','LEFT')
                        ->join('media m','s.id = m.source_id','LEFT')
                        ->field('s.*,m.link,m.type mtype,m.id mid,sc.cate_name')
                        ->where($where)
                        ->where('s.cate_id = '.$cateid)
                        ->order('id desc')
                        ->paginate();
            }
            else{
                // 获取素材信息
                $list = Db::name('source')
                        ->alias('s')
                        ->join('source_category sc','s.cate_id = sc.id','LEFT')
                        ->join('media m','s.id = m.source_id','LEFT')
                        ->field('s.*,m.link,m.type mtype,m.id mid,sc.cate_name')
                        ->where($where)
                        ->order('id desc')
                        ->paginate();
            }
	    			// ->limit(1)->page(1)->select();
	    	// print_r($list);die;
	    	$list = $list->toarray();
	    	// $pages = $list;
	    	// unset($pages['data']);
	    	// print_r($page);die;
	    	// $this->assign('list',$list['data']);
	    	// $this->assign('page',$pages);
	        // return view();
    		echo json_encode($list);
    	}
    }


    /**
     * 根据素材id获取素材数据
     * 获取素材的分组数据
     * @return 返回素材数据和素材分组数据
     */
    public function findmaterial(){
    	// 获取id
    	$id = input('id');
    	// 获取会员信息
    	$userinfo = $this->user;
    	
    	// 查找素材数据
    	$source = Db::name('source')
    			->alias('s')
    			->join('source_category sc','s.cate_id = sc.id','LEFT')
    			->join('media m','s.id = m.source_id','LEFT')
    			->field('s.*,m.link,m.type mtype,m.id mid,sc.cate_name')
    			->where('s.id',$id)
    			->where('s.uid = '.$userinfo['id'])
    			->find();
    	// $source = Db::name('source')->where('id',$id)->where('uid',$userinfo['id'])->find();
    	if ($source != '') {
	    	// 查找素材分组数据
	    	$cate = Db::name('source_category')->where('uid',$userinfo['id'])->select();
	    	if (!empty($cate)) {
	    		// 不为空，返回数据
	    		$data['cate'] = $cate;
	    		$data['source'] = $source;

	    		// 返回数据
	    		echo json_encode($data);
	    		// $this->success('查询成功');
	    	}
	    	else{
	    		// 返回失败提示
	    		$this->error('数据出错，请刷新后重试！');
	    	}
    	}
    	else{
    		// 找不到数据
    		$this->error('数据出错，请刷新后重试！');
    	}
    	// 返回查询结果
    }


    /**
     * 删除素材
     * @return 
     */
    public function matedel(){
    	// 获取提交信息
    	$id = input('id');
    	// 获取会员信息
    	$userinfo = $this->user;
    	// 判断该会员是否有这些对应的素材
    	$list = Db::name('source')->where('id','in',$id)->where('uid',$userinfo['id'])->select();
    	// 判断传递的数据是否在数据库中存在
    	if (count(explode(",",$id)) == count($list)) {
    		$reg = false;
	    	// echo json_encode($list);	
	    	Db::startTrans();
            try{
		    	// 删除
		    	$del = Db::name('source')->where('id','in',$id)->where('uid',$userinfo['id'])->delete();
		    	$list2 = Db::name('media')->where('source_id','in',$id)->select();
		    	foreach ($list2 as $key => $value) {
		    		// 删除数据库记录
		    		Db::name('media')->where('source_id',$value['id'])->delete();
		    		// 删除图片
		    		$this->delImage($value['id']);
		    	}

                // 提交事务
                Db::commit();
                // $orderreg = $regadd;
                if ($del > 0) {
                    $reg = true;
                }
            } catch (\Exception $e) {
                // 回滚事务
                Db::rollback();
                $reg = false;
            }
	    	// $del = Db::name('source')
	    	// 		->Join('media','source.id = media.source_id','LEFT')
	    	// 		->where('source.id','in',$id)
	    	// 		->where('source.uid',$userinfo['id'])
	    	// 		->fetchSql(true)
	    	// 		->delete();

	    	// echo json_encode($del);
	    	// 返回删除结果
	    	if ($reg == '0') {
	    		$this->error('删除失败');
	    	}
	    	elseif ($reg > 0) {
	    		$this->success('成功删除'.$del.'条数据');
	    	}

    	}
    	else{
    		$this->error('参数错误，删除失败');
    	}
    	
    }




    /**
     * 添加素材小组
     * @return json
     */
    public function addcate(){
    	// 获取ajax传递的信息
    	$cate_name = input('cate_name');
    	// 获取用户信息
    	$userinfo = $this->user;
    	// 组装插入素材小组所需的数组
    	$data = array(
    			'cate_name' => $cate_name,
    			'uid' => $userinfo['id'],
    		);
    	// 添加数据到数据库
    	$add = Db::name('source_category')->insert($data);
    	// 判断返回操作结果
    	if ($add == '1') {
    		// 添加成功
    		$this->success('添加成功');
    	}
    	else{
    		// 添加失败
    		$this->error('添加失败');
    	}
    	
    	// echo json_encode($data);
    	// 
    }


    /**
     * 修改素材信息
     * @return 
     */
    public function edit(){
    	// // 获取素材id
    	// $id = input('id');
    	// // 获取用户信息
    	// $userinfo = $this->user;

    	// // 获取素材内容
    	// $data = Db::name('source')
	    // 			->alias('s')
	    // 			->join('source_category sc','s.cate_id = sc.id','LEFT')
	    // 			->join('media m','s.id = m.source_id','LEFT')
	    // 			->field('s.*,m.link,m.type mtype,m.id mid,sc.cate_name')
	    // 			->where('s.uid = '.$userinfo['id'].' and s.id = '.$id)
	    // 			->find();
    	
    	// echo json_encode($data);

    	// 获取ajax传递的信息
    	$data = [];
    	$data = input('post.');
    	if (isset($data['filename'])) {
    		
	    	$media = $data['filename'];
	    	unset($data['filename']);
    	}
    	// 获取用户信息
    	$userinfo = $this->user;
    	$data['uid'] = $userinfo['id'];
        $reg = false;
    	// echo json_encode($data);

    	// 判断是否需要添加数据到用户多媒体资源表
    	if ($data['type'] != '0') {
            // 启动事务
            Db::startTrans();
            try{
	    		// 需要
	    		$add = Db::name('source')->update($data);
	    		// $add = Db::name('source')->getLastInsID();
	    		// $add = Db::name('source')->insertGetId($data);
	    		// if ($add > 0) {
	    			$upd = Db::name('media')->where('id', $media)->update(['source_id' => $data['id']]);
	    		// }

                // 提交事务
                Db::commit();
                // $orderreg = $regadd;
                if ($add > 0) {
                    $reg = true;
                }
            } catch (\Exception $e) {
                // 回滚事务
                Db::rollback();
                $reg = false;
            }
    	}
    	else{
    		// 不需要
    		$add = Db::name('source')->update($data);
    		// Db::name('source')->getLastInsID();
            if ($add > 0) {
                $reg = true;
            }
    		// $add = Db::name('source')->insertGetId($data);
    	}
    	// 添加数据到数据库
    	// $add = Db::name('source_category')->insert($data);
    	// 判断返回操作结果
    	if ($reg) {
    		// 添加成功
    		$this->success('修改成功',url('material/manage'));
    	}
    	else{
    		// 添加失败
    		$this->error('修改失败');
    	}
    	
    }


    // 素材小组
    public function classify(){
    	$page = input('page');
    	if ($page == '') {
	    	// 获取会员信息
	    	$userinfo = $this->user;
	    	$cate = [];
	    	$cate = Db::name('source_category')
	    			->where('uid',$userinfo['id'])
	    			->order('id desc')
	    			->paginate();

	    	$cate = $cate->toarray();
	    	$pages = $cate;

	    	// 循环获取数量
	    	foreach ($cate['data'] as $key => $value) {
	    		$quant = Db::name('source')
	    				->where('cate_id',$value['id'])
	    				->where('uid',$userinfo['id'])
	    				->select();
	    		$cate['data'][$key]['quant'] = count($quant);
	    	}
	    	unset($pages['data']);
	    	// print_r($cate);die;
	    	$this->assign('list',$cate['data']);
	    	$this->assign('page',$pages);


	        return view();
    	}
    	else{

	    	// 获取用户信息
	    	$userinfo = $this->user;
	    	$cate = [];
	    	$cate = Db::name('source_category')
	    			->where('uid',$userinfo['id'])
	    			->order('id desc')
	    			->paginate();

	    	$cate = $cate->toarray();

	    	// 循环获取数量
	    	foreach ($cate['data'] as $key => $value) {
	    		$quant = Db::name('source')
	    				->where('cate_id',$value['id'])
	    				->where('uid',$userinfo['id'])
	    				->select();
	    		$cate['data'][$key]['quant'] = count($quant);
	    	}
    		echo json_encode($cate);
    	}
    }


    /**
     * 删除素材分组
     * @return 返回删除成功的条数
     */
    public function delcate(){
    	// 获取素材分组id
    	// 删除素材分组和素材分组中的素材和素材对应的文件
    	// 获取提交信息
    	$id = input('id');
    	// 获取会员信息
    	$userinfo = $this->user;
    	// 判断该会员是否有这些对应的素材
    	$list = Db::name('source_category')->where('id','in',$id)->where('uid',$userinfo['id'])->select();
    	// echo json_encode($list);
    	// $aa=count($list);
    	// echo json_encode($aa);
    	// $ii = count(explode(",",$id);
    	// echo json_encode($ii);
    	// 判断传递的数据是否在数据库中存在
    	if (count(explode(",",$id)) == count($list)) {
    		$reg = false;
	    	// echo json_encode($list);	
	    	Db::startTrans();
            try{
		    	// 删除素材小组
		    	$del = Db::name('source_category')->where('id','in',$id)->where('uid',$userinfo['id'])->delete();
		    	// 获取要删除的素材id
		    	$source = Db::name('source')->where('cate_id','in',$id)->where('uid',$userinfo['id'])->select();
		    	$sid = '';
		    	foreach ($source as $key => $value) {
		    		$sid = $value['id'].',';
		    	}
		    	// 删除最后一个字符
		    	$sid = substr($sid, 0, -1);
		    	// 删除素材
		    	$dels = Db::name('source')->where('id','in',$sid)->where('uid',$userinfo['id'])->delete();
		    	// 删除素材多媒体文件
		    	$list2 = Db::name('media')->where('source_id','in',$sid)->select();
		    	foreach ($list2 as $key => $value) {
		    		// 删除数据库记录
		    		Db::name('media')->where('source_id',$value['id'])->delete();
		    		// 删除图片
		    		$this->delImage($value['id']);
		    	}

                // 提交事务
                Db::commit();
                // $orderreg = $regadd;
                if ($del > 0) {
                    $reg = true;
                }
            } catch (\Exception $e) {
                // 回滚事务
                Db::rollback();
                $reg = false;
            }
	    	// $del = Db::name('source')
	    	// 		->Join('media','source.id = media.source_id','LEFT')
	    	// 		->where('source.id','in',$id)
	    	// 		->where('source.uid',$userinfo['id'])
	    	// 		->fetchSql(true)
	    	// 		->delete();

	    	// echo json_encode($del);
	    	// 返回删除结果
	    	if ($reg) {
	    		$this->success('成功删除'.$del.'条数据');
	    	}
	    	else {
	    		$this->error('删除失败');
	    	}

    	}
    	else{
    		$this->error('参数错误，删除失败');
    	}
    }


    /* 用户中心 */

    // 账户管理
    public function accmanage(){
    	//  software 用户社交软件账号表（微信、陌陌、探探等）
    	return view();
    }
    


    // 个人资料
    public function uinfo(){
    	//   member 用户表
    	// 获取用户信息
    	$userinfo = $this->user;
    	$user = Db::name('member')->where('id',$userinfo['id'])->find();
    	print_r($user);die;
    	return view();
    }
    



    // 修改密码  member 用户表
    public function editpwd(){
    	//   member 用户表
    	return view();
    }
    

    /* 数据仓库 */

    // 好友账号库  social 社交用户好友表（微信、陌陌、探探等）
    public function useracclist(){
    	//   member 用户表
    	return view();
    }
    
    


    // 今日概况
    

    // 微信号概况
}
